#!/usr/bin/env sh
set -x

pgrep wf-recorder
status=$?

countdown() {
	notify "Recording in 3 seconds" -t 1000
	sleep 1
	notify "Recording in 2 seconds" -t 1000
	sleep 1
	notify "Recording in 1 seconds" -t 1000
	sleep 1
}

notify() {
	line=$1
	shift
	notify-send "Recording" "${line}" -i ~/.config/sway/themes/icons/Papirus-Dark/32x32/devices/camera-video.svg $*
}

if [ $status != 0 ]; then
	target_path=$(xdg-user-dir VIDEOS)
	timestamp=$(date +'recording_%Y%m%d-%H%M%S')

	notify "Select a region to record" -t 1000

	countdown
	(sleep 0.5 && pkill -RTMIN+8 waybar) &

	if [ "$1" = "-a" ]; then
		area=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp)
		file="$target_path/$timestamp.mp4"
		wf-recorder --audio -g "$area" --file="$file"
	elif [ "$1" = "-w" ]; then
		area=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp)
		file="$target_path/$timestamp.webm"
		wf-recorder -g "$area" -c libvpx --codec-param="qmin=0" --codec-param="qmax=25" --codec-param="crf=4" --codec-param="b:v=1M" --file="$file"
	else
		file="$target_path/$timestamp.mp4"
		wf-recorder -t --file="$file" --audio=alsa_output.pci-0000_08_00.6.analog-stereo.monitor
	fi

	pkill -RTMIN+8 waybar && notify "Finished recording ${file}"
else
	pkill --signal SIGINT wf-recorder
	pkill -RTMIN+8 waybar
fi
